/*
 * Copyright (C), 2002-2017, 苏宁易购电子商务有限公司
 * FileName: BaseDaoImpl.java
 * Author:   15050536
 * Date:     2017年3月28日 上午9:24:35
 * Description: //模块目的、功能描述      
 * History: //修改记录
 * <author>      <time>      <version>    <desc>
 * 修改人姓名             修改时间            版本号                  描述
 */
package com.suning.sawp.member.dao.impl;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Qualifier;

import com.suning.framework.dal.client.DalClient;
import com.suning.sawp.service.util.BeanUtil;

/**
 * 一些通用的dao方法
 *
 * @author 15050536 石键平
 */
public class BaseDaoImpl {

	/** 用于增加、修改、删除、合并操作 */
	/**
	 * 相当于注入
	 */
	@Resource
	@Qualifier("dalClient")
	protected DalClient dalClient;

	/** 用于查询操作 */
	@Resource
	@Qualifier("dalClientRead")
	protected DalClient dalClientRead;

	public <T> boolean save(T t) {
		Number number = dalClient.persist(t);
		if (number == null) {
			return false;
		}
		return true;
	}

	public <T> boolean update(T t) {
		Number number = dalClient.dynamicMerge(t);
		if (number == null) {
			return false;
		}
		return true;
	}

	public <T> boolean batchSave(String sqlId, List<T> list) {
		if (CollectionUtils.isEmpty(list)) {
			return false;
		}
		@SuppressWarnings("unchecked")
		Map<String, Object>[] params = new Map[list.size()];
		for (int i = 0; i < list.size(); i++) {
			params[i] = BeanUtil.describe(list.get(i));
		}
		int[] result = dalClient.batchUpdate(sqlId, params);
		if (result == null || result.length == 0) {
			return false;
		}
		int successNum = 0;
		for (int r : result) {
			successNum += r;
		}
		return successNum == list.size();
	}

}
